home *** CD-ROM | disk | FTP | other *** search
/ PCMania 64 / PCMania CD64_1.iso / phy / phy002 / files / articulo.002 < prev    next >
Encoding:
Text File  |  1997-01-27  |  8.5 KB  |  139 lines

  1. *cN                   Curso de programación en assembler (II)
  2. *cG
  3.   Continuamos con el curso de ensamblador del 80x86 viendo los sistemas de
  4. numeración usados en bajo nivel. En un principio muy lejano, se pretendió
  5. que los ordenadores trabajaran en decimal y se construyeron enormes máquinas
  6. con ruedas dentadas que no conducieron a nada. Poco más tarde a alguien se
  7. le ocurrió la idea de usar los principios matématicos que estudió a Boole
  8. para modelizar el pensamiento lógico. Bajo el nombre genérico de álgebra de
  9. Boole, se encuentra TODO lo que un ordenador entiende: 1 y 0.
  10.   Sí, con la simplicidad que esto supone para los circuitos lógicos (o pasa
  11. corriente o no pasa) se consiguió que hoy disfrutemos en casa de maravillosas
  12. máquinas capaces de hacer millones de cálculos por segundo. El fundamento de
  13. este álgebra lo podeis encontrar en cualquier libro, ya que es una cosa que
  14. en este curso no tocaremos.
  15.   Lo que si vamos a ver es como manejarla para poder entender como trabaja el
  16. ordenador internamente. Para ello existen las llamadas tablas de verdad que
  17. permiten operar con los dos elementos del álgebra. Estas tablas tienen sus
  18. equivalentes directas como puertas lógicas (componentes electrónicos) que se
  19. verán más adelante en un futuro curso de robótica.
  20.   La operación más sencilla que existe es la negación que asigna 1 al 0 y
  21. 0 al 1. Su tabla de verdad es muy sencilla:
  22. *cA
  23.                       - 1  0
  24.                         ----
  25.                         0  1
  26. *cG
  27. El negador se suele representar por un barra encima del elemento a negar.
  28.   La tabla de verdad de OR hace lo que su nombre indica, resulta 1 si un
  29. elemento O el otro está a 1, sino se pone a 0:
  30. *cA
  31.                         1  1  0  0
  32.                       + 1  0  1  0
  33.                         ----------
  34.                         1  1  1  0
  35. *cG
  36.   La tabla de verdad de AND es también obvia, se pone a 1 cuando los dos
  37. elementos estan a 1:
  38. *cA
  39.                         1  1  0  0
  40.                       * 1  0  1  0
  41.                         ----------
  42.                         1  0  0  0
  43. *cG
  44.   La última tabla de verdad que veremos es la XOR que ya no es tan obvia. La
  45. operación XOR devuelve 1 en los pares de bits en que uno es 0 y el otro es 1,
  46. su nombre es OR exclusivo porque excluye cuando los dos estan a 1:
  47. *cA
  48.                         1  1  0  0
  49.                       o 1  0  1  0
  50.                         ----------
  51.                         0  1  1  0
  52. *cG
  53.   Estas tablas se corresponden con las expresiones que nosotros utilizamos en
  54. la realidad, por ejemplo cuando decimos "me voy a comer una manzana y una
  55. pera" esto es cierto cuando te comes una manzana y te comes una pera, pero
  56. no cuando sólo te comes una fruta.
  57.   Pues esto tan sencillo o complicado es todo lo que entienden los ordenadores.
  58. Para representar un número se utiliza el sistema binario que es básicamente
  59. como el decimal, pero con menos referentes. Así el 12 en binario se escribiria
  60. como una ristra de unos y ceros, concretamente 1100. Al igual que en decimal
  61. un 0 a la izquierda no tiene ningún valor.
  62.   El problema es, ¿como transformar de binario a decimal? La pregunta es, hoy
  63. en dia, trivial: con una calculadora. Pero vamos a ver como se debe de hacer
  64. a mano para después ser capaces de programar esa hipotética calculadora. En
  65. primer lugar recordar que los dígitos en todos los sistemas de representación
  66. que usemos tienen un peso o valor dependiente de la posición que ocupen en la
  67. secuencia. Teniendo en cuenta esto último, sólo es necesario conocer ese peso
  68. para poder calcular los valores de los número en binario. Este peso es muy
  69. sencillo de calcular y es completamente análogo al sistema decimal, cada bit,
  70. comenzando por el de más a la derecha, tiene un valor de 2 (la base) elevado
  71. a el número de posición que ocupa. En un byte (agrupación de 8 bits) los pesos
  72. serian 128-64-32-16-8-4-2-1, y para una word (2 bytes) se seguiria elevando
  73. el peso de cada bit y la suma de todos resultaria el valor del byte o word.
  74.   Ahora que ya sabemos transformar de binario, nos hace falta algo que permita
  75. trabajar sin perder de vista los unos y ceros y que sea más manejable (para
  76. representar un millón necesitamos escribir 20 cifras). Este elemento será el
  77. sistema hexadecimal, un sistema númerico que se representa mediante 16
  78. símbolos que son: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Si encontramos un elemento
  79. libre este representará el valor que parece más lógico: A=10, B=11 C=12,...
  80.   El álgebra de este sistema es equivalente al decimal y el binario y todo lo
  81. expuesto anteriormente para el binario es válido para el hexa. Lo interesante
  82. de este sistema es que si aqrupamos 4 bits, estos se corresponden directamente
  83. con un símbolo hexa y viceversa. Si por ejemplo tenemos el número 43 en decimal
  84. y lo queremos pasar a hexa, podemos pasarlo a binario primero y luego a hexa:
  85. 101011 en binario, lo agrupamos 0010 1011 y queda como 2-11 que es 2B en el
  86. sistema hexadecimal. No insistiré más sobre este tema, si es necesario podeis
  87. consultar algún buen libro de matemática discreta o simplemente compraros el
  88. mejor libro para aprender ensamblador: "El ensamblador de 80x86" de Anaya que
  89. por muy poco dinero (1500 pelas) os introducirá en todo lo que rodea al PC.
  90. *cN
  91.     Visión general de la familia 80x86
  92. *cG
  93.   El procesador 8086 fue el primer gran éxito comercial de Intel. Vió la luz
  94. hacia mediados de los '70 y desde su nacimiento se presento como procesador
  95. para ordenadores domesticos, aunque por su alto precio tardó en llegar a ser
  96. lo que hoy es. Mientras las empresas como Amstrad, Spectrum y demás copaban
  97. el mercado domestico con procesadores Z80 de 8 bits, los ingenieros de Intel
  98. ya tenian la vista puesta en metas más altas y por ello construyeron este
  99. procesador de 16 bits que disponia un bus de 20 bits que le "limitaban"
  100. a un mega (de RAM, claro). Esto último, esta gran limitación hoy dia, entonces
  101. era una cantidad tan exageradamente grande como puede parecernos ahora que
  102. nuestro PC pudiera equiparse con 4 gigas (quien sabe, tal vez en un futuro
  103. esto nos parezca poco).
  104.   Al 8086 le siguieron el 8088 que fue un intento de abaratar los costes del
  105. primero de la familia y que por lo tanto era netamente inferior; el 80186 y
  106. 80188 que prácticamente pasaron desapercibidos ya que no incorporaban ningún
  107. elemento novedoso, simplemente eran 8086 más rápidos; el 80286 que fue una
  108. gran mejora respecto a su antecesor ya que incorporaba un bus de direcciones
  109. de 24 bits con lo que manejaba hasta 16 megas y además incorporaba un nuevo
  110. modo de procesador llamado "protegido" que permitia mayor libertad al progra-
  111. mador; el revolucionario 80386 marcó una época ya que incorporaba registros
  112. de 32 bits en contraposición con los anteriores procesadores, así como un
  113. nuevo modo llamado "virtual" con el que se podian emular varias máquinas
  114. corriendo pseudo-simultaneamente y con su bus de 32 bits se alcanzaba la
  115. increible cantidad de 4Gbytes de RAM; el 80486 SX y DX que a parte de no
  116. incorporar nada nuevo, marearon a los no-iniciados con los relojes doblados
  117. y triplicados y las vertiente SX (más mala) y DX (con copro integrado); el
  118. Pentium que fue casi tan retrasado como el Güindows 95 a causa de sus
  119. recalentamientos ya que era un procesador muy avanzado (unos 5 millones de
  120. transistores) y que ya incorpora funcionalidades de Work Station al permitir
  121. la ejecución paralela (pipeline) pudiendose ejecutar 2 instrucciones por ciclo
  122. y permitiendo ver los primeros PC biprocesador; y el jovencito de la familia,
  123. llamado Pentium Pro (no por ser una versión "profesional" como apuntan algunos)
  124. y que da el paso definitivo hacia la equiparación de los equipos PC con los
  125. main frames y work station.
  126.   Después de este pequeño repaso de los procesadores el siguiente paso será
  127. comenzar a programar, pero ¿para cual de todos? ¿Y porqué no lo hacemos para
  128. todos a la vez? Sí, la compatibilidad descendente que ha proporcionado Intel
  129. ha sido la clave del éxito de los 80x86 y por ende del PC. Sin esa compatibi-
  130. lidad no podriamos hacer un programa para un 386 y luego ampliar el equipo a
  131. Pentium lo que resultaria un gran fracaso económico para las compañias que
  132. tuvieran que pagar a los programadores (y que seguramente migrarian a otras
  133. plataformas). Aprovechándonos de la compatibilidad decreciente comenzaremos
  134. en el próximo número a ver las instrucciones de los procesadores más sencillos
  135. de la familia (8086 a 80286) y haremos nuestro primer programa en assembler,
  136. hasta entonces pasadlo bien.
  137. *cL
  138.                                                           Navi Dj.
  139.